home *** CD-ROM | disk | FTP | other *** search
- <!DOCTYPE HTML>
- <html i18n-values="dir:textdirection;">
- <head>
- <!-- If you change the title, make sure you also update
- chrome/test/functional/special_tabs.py. -->
- <title>Sync Internals</title>
- <link rel="stylesheet" href="chrome://resources/css/list.css">
- <link rel="stylesheet" href="chrome://resources/css/tabs.css">
- <link rel="stylesheet" href="chrome://resources/css/tree.css">
- <style>/* Copyright (c) 2012 The Chromium Authors. All rights reserved.
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file. */
-
- #sync-search-query {
- width: 20em;
- }
-
- #sync-search-query[error] {
- background-color: rgb(255,170,170);
- }
-
- #sync-search-status {
- color: rgb(51,51,51);
- font-style: italic;
- }
-
- #sync-results-container {
- display: -webkit-box;
- /* Should be > #sync-page's min-height. */
- /* TODO(akalin): Find a less hacky way to do this. */
- height: 750px;
- }
-
- #sync-results-list {
- -webkit-padding-start: 10px;
- box-sizing: border-box;
- height: 100%;
- /* min-width and max-width are used by the split pane. */
- max-width: 50%;
- min-width: 50px;
- overflow: auto;
- padding: 5px;
- width: 275px;
- }
-
- #sync-results-splitter {
- background-color: rgb(235, 239, 249);
- cursor: col-resize;
- /* TODO(akalin): Make the BMM also use this style. */
- cursor: e-resize;
- width: 5px;
- }
-
- #sync-result-details-container {
- -webkit-box-flex: 1;
- height: 100%;
- overflow: auto;
- /* TODO(akalin): Figure out why this is needed, even with box-flex: 1. */
- width: 100%;
- }
- </style>
- <style>/* Copyright (c) 2012 The Chromium Authors. All rights reserved.
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file. */
-
- #sync-node-main {
- display: -webkit-box;
- /* Should be > #sync-page's min-height. */
- /* TODO(akalin): Find a less hacky way to do this. */
- height: 750px;
- }
-
- #sync-node-tree-container {
- -webkit-padding-start: 10px;
- box-sizing: border-box;
- height: 100%;
- /* min-width and max-width are used by the split pane. */
- max-width: 50%;
- min-width: 50px;
- overflow: auto;
- padding: 5px;
- width: 200px;
- }
-
- #sync-node-tree {
- display: inline-block;
- min-width: 100%;
- overflow: visible; /* let the container do the scrolling */
- }
-
- /* TODO(akalin): Find a better icon to use for leaf nodes. */
- #sync-node-tree .leaf .tree-label {
- background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAALCAMAAACecocUAAABIFBMVEUAAABNT9mQlOuQleqcoOueouyore2zt+6GieukqO1lae59gu5NTttRU9uUmO+5vvN5feSaneuQlOuhpfNSVN9xdORHSeFmaOhrb+l7f+oxM+EpKs1LTdtOTr5jZdVkZtNtcOIXFpMaGbUnKLMzM8g7O7ZHSctISsNHRpdfYM0cHLolJsY2NqA9P94+PatLSGxNT+dOS11QTFxQToZVVINhXTBsb+Rtaotwc+NydONzbVJ2euZ3drV9diWOinuPh1WalWublCOcmHydliaelRuelh2qple0rgq5siG5tVi7tDi8t2a/v1bAwFjVygTj2STs5R7s6Dbu5AHv6h399A/99QL+9gH++QL++Qn/9w//+Qf/+Qr/+Qv//Ar//wL//wVJoqVjAAAAKnRSTlMAAhUVFRUiIikpaGh7e35+hISIiIyMjY2Zma3KytHR4uLr6/X19fX1+/u1+br2AAAAd0lEQVQIHQXBgwEDAADAsM62bdu2bev/L5YAYAmbAQAU3r5HDoBYpGqfakqhBDStRn7462XqVTWp7mZ1uO8X62YSf2n+fZ9f11nOh8wRXH4ez0HALgXc09vxMnIB6BK7cXGyjWsBW7mTdmYrBStgiMSMAlM0pOcPQdsR0Uyc0HcAAAAASUVORK5CYII=');
- }
-
- #sync-node-splitter {
- background-color: rgb(235, 239, 249);
- cursor: col-resize;
- width: 5px;
- /* TODO(akalin): Make the BMM also use this style. */
- cursor: e-resize;
- }
-
- #sync-node-browser-container {
- -webkit-box-flex: 1;
- height: 100%;
- overflow: auto;
- }
-
- #node-browser {
- width: 100%;
- }
-
- #node-browser td {
- vertical-align: top;
- }
-
- #node-browser tr:nth-child(odd) {
- background: rgb(239, 243, 255);
- }
- </style>
-
- <script src="chrome://resources/css/tree.css.js"></script>
-
- <script src="chrome://resources/js/event_tracker.js"></script>
- <script src="chrome://resources/js/cr.js"></script>
- <script src="chrome://resources/js/cr/event_target.js"></script>
- <script src="chrome://resources/js/cr/ui/touch_handler.js"></script>
- <script src="chrome://resources/js/cr/ui.js"></script>
- <script src="chrome://resources/js/cr/ui/focus_outline_manager.js"></script>
- <script src="chrome://resources/js/cr/ui/splitter.js"></script>
-
- <!-- List stuff. -->
- <script src="chrome://resources/js/cr/ui/array_data_model.js"></script>
- <script src="chrome://resources/js/cr/ui/list_item.js"></script>
- <script src="chrome://resources/js/cr/ui/list_selection_controller.js"></script>
- <script src="chrome://resources/js/cr/ui/list_selection_model.js"></script>
- <script src="chrome://resources/js/cr/ui/list.js"></script>
- <script src="chrome://resources/js/cr/ui/tabs.js"></script>
- <script src="chrome://resources/js/cr/ui/tree.js"></script>
- <script src="chrome://resources/js/util.js"></script>
- <script src="chrome://sync-internals/chrome_sync.js"></script>
- <script src="chrome://sync-internals/sync_log.js"></script>
- <script src="chrome://sync-internals/sync_node_browser.js"></script>
- <script src="chrome://sync-internals/sync_search.js"></script>
- <script src="chrome://sync-internals/strings.js"></script>
- </head>
- <body i18n-values=".style.fontFamily:fontfamily;.style.fontSize:fontsize">
-
- <style>
- #sync-page {
- /* TODO(akalin): Figure out a better way to make the tab box the
- same height no matter which tab is selected. */
- min-height: 650px;
- }
-
- #traffic-dump {
- font-size: 120%;
- }
- </style>
-
- <tabbox id="sync-page">
- <tabs>
- <tab>About</tab>
- <tab>Data</tab>
- <tab>Notifications</tab>
- <tab>Events</tab>
- <tab>Sync Node Browser</tab>
- <tab>Search</tab>
- <tab>Traffic</tab>
- </tabs>
- <tabpanels>
- <tabpanel>
- <script src="chrome://sync-internals/about.js"></script>
-
- <style>
- div#aboutInfo {
- -webkit-columns: 3;
- }
-
- div#aboutInfo h2 {
- color: #4a8ee6;
- font-size: 100%;
- margin-bottom: 0;
- }
-
- div#aboutInfo .err {
- color: red;
- }
-
- div#aboutInfo div.section {
- display: inline-block;
- width: 100%;
- -webkit-column-break-inside: avoid;
- }
-
- table.aboutDetails {
- width: 100%;
- }
-
- table.aboutDetails tr:nth-child(odd) {
- background: #eff3ff;
- }
-
- div#aboutInfo div.section > td#detail {
- width: 50%;
- }
-
- div#aboutInfo div.section > td#value {
- width: 50%;
- }
-
- table#typeInfo tr.error {
- background: #ffcccc;
- }
-
- table#typeInfo tr.warning {
- background: #ffffcc;
- }
-
- table#typeInfo tr.ok {
- background: #ccffcc;
- }
-
- @-webkit-keyframes highlight1 {
- 0% { background: #ffff00; }
- 100% { background: #ffffff; }
- }
-
- @-webkit-keyframes highlight2 {
- 0% { background: #9b9ea6; }
- 100% { background: #eff3ff; }
- }
-
- table.aboutDetails tr[highlighted] {
- -webkit-animation-name: highlight1;
- -webkit-animation-duration: 3s;
- -webkit-animation-timing-function: linear;
- }
-
- table.aboutDetails tr[highlighted]:nth-child(odd) {
- -webkit-animation-name: highlight2;
- -webkit-animation-duration: 3s;
- -webkit-animation-timing-function: linear;
- }
-
- table.aboutDetails tr.uninitialized {
- color: #7f7f7f;
- }
-
- </style>
-
- <div id='aboutInfo'>
- <div class="section" jsselect="details">
- <h2 jscontent="title"></h2>
- <table class="aboutDetails">
- <tr jsselect="data"
- jsvalues="class:$this.is_valid ? '' : 'uninitialized'"
- jseval='highlightIfChanged(this, this.children[1].innerText, stat_value)'>
- <td class="detail" jscontent="stat_name" width=50%></td>
- <td class="value" jscontent="stat_value" width=50%></td>
- </tr>
- </table>
- </div>
-
- <div class="section">
- <h2>Type Info</h2>
- <table id="typeInfo">
- <tr jsselect="type_status" jsvalues="class:$this.status">
- <td jscontent="name" width=50%></td>
- <td jscontent="value" width=30%></td>
- <td jscontent="num_entries" width=10%></td>
- <td jscontent="num_live" width=10%></td>
- </tr>
- </table>
- </div>
-
- <div class="section" jsdisplay="unrecoverable_error_detected">
- <p>
- <span class="err" jscontent="unrecoverable_error_message"></span>
- </p>
- </div>
-
- <div class="section" jsdisplay="actionable_error_detected">
- <p>
- <h2>Actionable Error</h2>
- <table id="actionableError">
- <tr jsselect="actionable_error">
- <td jscontent="stat_name"></td>
- <td jscontent="stat_value"></td>
- </tr>
- </table>
- </p>
- </div>
- </div>
-
- </tabpanel>
- <tabpanel>
- <p><strong>Some personal info may be in the events dump. Be
- careful about posting data dumps on bug reports.</strong></p>
-
- <button id="dump-to-text">Dump sync events to text</button>
-
- <pre id="data-dump"></pre>
-
- <hr>
-
- <div id="node-type-checkboxes">
- </div>
-
-
- <button id="dump-to-file">Dump sync nodes to file</button>
-
- <a style="display: none" id="dump-to-file-anchor"></a>
-
- <script src="chrome://sync-internals/data.js"></script>
-
- </tabpanel>
- <tabpanel>
- <script src="chrome://sync-internals/notifications.js"></script>
-
- <style>
- table#notificationInfo tr:nth-child(odd) {
- background: #eff3ff;
- }
- </style>
-
- <p id='notificationStateInfo'>
- State: <span jscontent='notificationState'></span>
- </p>
- <table id='notificationInfo'>
- <tr>
- <th>Type</th>
- <th>Total count</th>
- <th>Session count</th>
- <th>Payload</th>
- </tr>
- <tr jsselect='notifications'>
- <td jscontent='type'></td>
- <td jscontent='totalCount'></td>
- <td jscontent='sessionCount'></td>
- <td jscontent='payload'></td>
- </tr>
- </table>
-
- </tabpanel>
- <tabpanel>
- <style>
- #sync-events-table,
- #sync-events-table th,
- #sync-events-table td {
- border: 1px black solid;
- }
-
- #sync-events-table {
- width: 100%;
- }
-
- #sync-events > tr {
- vertical-align: top;
- }
- </style>
-
- <table id="sync-events-table">
- <thead>
- <th>Time</th>
- <th>Submodule</th>
- <th>Event</th>
- <th>Details</th>
- </thead>
- <tbody id="sync-events">
- </tbody>
- </table>
-
- <script src="chrome://sync-internals/events.js"></script>
-
- </tabpanel>
- <tabpanel>
- <!-- TODO(akalin): Move to a three-pane view; node tree on the left
- (minus leaf nodes), tree contents list on the upper right, selected
- item detail on the lower right. -->
-
- <div id="sync-node-main">
- <!-- TODO(akalin): Figure out how to get this element to be as tall
- as its container (style.height=100% doesn't work). Also fix
- behavior when tree is too tall (currently it makes you scroll the
- entire page). -->
- <div id="sync-node-tree-container">
- <tree id="sync-node-tree" icon-visibility="parent"></tree>
- </div>
- <div id="sync-node-splitter"></div>
- <div id="sync-node-browser-container">
- <table id="node-browser">
- <tr>
- <td>ID</td>
- <td jscontent="id"></td>
- </tr>
- <tr>
- <td>Modification Time</td>
- <td jscontent="modificationTime"></td>
- </tr>
- <tr>
- <td>Parent</td>
- <td jsContent="parentId"></td>
- </tr>
- <tr>
- <td>Is Folder</td>
- <td jscontent="isFolder"></td>
- </tr>
- <tr>
- <td>Title</td>
- <td jscontent="title"></td>
- </tr>
- <tr>
- <td>Type</td>
- <td jscontent="type"></td>
- </tr>
- <tr>
- <td>External ID</td>
- <td jscontent="externalId"></td>
- </tr>
- <tr>
- <td>Predecessor</td>
- <td jscontent="predecessorId"></td>
- </tr>
- <tr>
- <td>Successor</td>
- <td jscontent="successorId"></td>
- </tr>
- <tr>
- <td>First Child</td>
- <td jscontent="firstChildId"></td>
- </tr>
- <tr>
- <td>Entry</td>
- <td><pre jscontent="entry"></pre></td>
- </tr>
- </table>
- </div>
- </div>
-
- <script src="chrome://sync-internals/node_browser.js"></script>
-
- </tabpanel>
- <tabpanel>
- <p>
- <input id="sync-search-query" type="search" incremental
- placeholder="Search Sync Data">
- <span id="sync-search-status"></span>
- </p>
-
- <div id="sync-results-container">
- <list id="sync-results-list"></list>
- <div id="sync-results-splitter"></div>
- <div id="sync-result-details-container">
- <pre id="sync-result-details"></pre>
- </div>
- </div>
-
- <script src="chrome://sync-internals/search.js"></script>
-
- </tabpanel>
- <tabpanel>
- <p><strong>Some personal info may be in the data dump. Be
- careful about posting data dumps on bug reports.</strong></p>
-
- <button id="traffic-to-text">Dump client server traffic to text</button>
-
- <pre id="traffic-dump"></pre>
-
- <script src="chrome://sync-internals/traffic.js"></script>
-
- </tabpanel>
- </tabpanels>
- </tabbox>
-
- <script src="chrome://resources/js/i18n_template.js"></script>
- <script src="chrome://resources/js/i18n_process.js"></script>
- <script src="chrome://resources/js/jstemplate_compiled.js"></script>
- <script src="chrome://sync-internals/sync_index.js"></script>
- </body>
- </html>
-